﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data;
using produccion.reportes;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FRMrSalMatp.xaml
    /// </summary>
    public partial class FRMrImpSal : Window
    {
        public FRMrImpSal()
        {
            InitializeComponent();
        }

        private void butIm_Click(object sender, RoutedEventArgs e)
        {
            rImpSal.imprimir();
        }

        private void butLimp_Click(object sender, RoutedEventArgs e)
        {
            rImpSal.limpiar();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Keyboard.Focus(textBox1);
        }

        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            var elemento = e.OriginalSource as UIElement;
            if (e.Key == Key.F3 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta == true) { MDOgeneral.logBusquedadAbierta = false; }
            }

            if (e.Key == Key.F4 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta1 == true) { MDOgeneral.logBusquedadAbierta1 = false; }
            }

            if (e.Key == Key.F5 && elemento != null)
            {
                if (MDOgeneral.logBusquedadAbierta2 == true) { MDOgeneral.logBusquedadAbierta2 = false; }
            }
        }

    }

    public class rImpSal:ObservableObject 
    {
        public rImpSal()
        {
            MDOgeneral.conectar();
            strTituloVentana = "Reimprimir salidas - Usuario: " + MDOgeneral.usuario + " - [FRMImpSal]";
        }

        private string _strTituloVentana;
        public string strTituloVentana
        {
            get { return _strTituloVentana; }
            set { _strTituloVentana = value; RaisePropertyChangedEvent("strTituloVentana"); }
        }

        private string _tipo="D";
        public string tipo 
        {
            get { return _tipo; }
            set 
            { 
                _tipo = value;
                if (!String.IsNullOrEmpty(_tipo)) { consultar(); }
                RaisePropertyChangedEvent("tipo");
            }
        }

        private string _nrosal;
        public string nrosal 
        {
            get { return _nrosal; }
            set 
            { 
                _nrosal = value;
                if (!String.IsNullOrEmpty(_nrosal))
                {
                    consultar();
                }
                RaisePropertyChangedEvent("nrosal");
            }        
        }

        private DateTime _fecha=DateTime.Today;
        public DateTime fecha 
        {
            get { return _fecha; }
            set { _fecha = value; RaisePropertyChangedEvent("fecha"); }
        }

        private string _observacion;
        public string observacion {
            get { return _observacion; }
            set { _observacion = value;
            RaisePropertyChangedEvent("observacion"); }
        }

        private string _destino;
        public string destino 
        {
            get { return _destino; }
            set { _destino = value; RaisePropertyChangedEvent("destino");
            }
        }

        private string _ordpro;
        public string ordpro 
        {
            get { return _ordpro; }
            set { _ordpro = value; RaisePropertyChangedEvent("ordpro"); }
        }

        private string _estado;
        public string estado 
        {
            get { return _estado; }
            set { _estado = value; RaisePropertyChangedEvent("estado"); }
        }

        public void consultar() 
        {
            try 
            {
                clases.CLSENCSAL enc = new clases.CLSENCSAL { TIPSAL_ESA = tipo, HOJNRO_ESA = nrosal };
                enc.Consultar();
                if (enc.EXISTE) 
                { 
                    fecha = enc.FECSAL_ESA;
                    observacion = enc.OBSSAL_ESA;
                    destino = enc.DESSAL_ESA;
                    ordpro = enc.NROORDP_ESA;
                    estado = enc.ESTADO_ESA;

                    ENCSAL = new DataTable("ENCSAL");
                    ENCSAL.Columns.Add("TIPO");
                    ENCSAL.Columns.Add("NUMERO");
                    ENCSAL.Columns.Add("FECHA");
                    ENCSAL.Columns.Add("OBSERVACION");
                    ENCSAL.Columns.Add("NROORD");
                    ENCSAL.Columns.Add("DESTINO");
                    ENCSAL.Columns.Add("STREMPRESA");
            
                    DataRow r = ENCSAL.NewRow();
                    r["TIPO"] = tipo.Equals("P") ? "PRODUCCION" : tipo.Equals("O") ? "OTROS" : "DEVOLUCION";
                    r["NUMERO"] = enc.HOJNRO_ESA;
                    r["FECHA"] = enc.FECSAL_ESA.ToShortDateString();
                    r["OBSERVACION"] = enc.OBSSAL_ESA;
                    r["NROORD"] = enc.NROORDP_ESA;
                    r["DESTINO"] = enc.DESSAL_ESA;
                    r["STREMPRESA"] = MDOgeneral.strEmpresaImprime;

                    ENCSAL.Rows.Add(r);
                    DETSAL = new DataTable("DETSAL");
                    clases.CLSDETSAL det = new clases.CLSDETSAL { TIPSAL_DSA = tipo, HOJNRO_DSA = nrosal };
                    DETSAL = det.rImpSalMat();
                    DETSAL.TableName = "DETSAL";
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void limpiar() 
        {
            try 
            {
                tipo = "D";
                nrosal = "";
                fecha = DateTime.Today;
                observacion = "";
                destino = "";
                ordpro = "";
                estado = "";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public DataTable DETSAL=new DataTable();
        public DataTable ENCSAL = new DataTable();

        public void imprimir() 
        {
            try 
            {
                DataSet ds = new DataSet("dsRsalMatPri");
                ds.Tables.Add(DETSAL.Copy());
                ds.Tables.Add(ENCSAL.Copy());
                Vista vista = new Vista { ds = ds, reporte = @"reportes\repRsalMatPri.rpt" };
                vista.Show();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void imprimirDirecto()
        {
            try
            {
                clases.CLSENCSAL enc = new clases.CLSENCSAL { TIPSAL_ESA = tipo, HOJNRO_ESA = nrosal };
                enc.Consultar();
                if (enc.EXISTE)
                {
                    fecha = enc.FECSAL_ESA;
                    observacion = enc.OBSSAL_ESA;
                    destino = enc.DESSAL_ESA;
                    ordpro = enc.NROORDP_ESA;
                    estado = enc.ESTADO_ESA;

                    ENCSAL = new DataTable("ENCSAL");
                    ENCSAL.TableName = "ENCSAL";
                    ENCSAL.Columns.Add("TIPO");
                    ENCSAL.Columns.Add("NUMERO");
                    ENCSAL.Columns.Add("FECHA");
                    ENCSAL.Columns.Add("OBSERVACION");
                    ENCSAL.Columns.Add("NROORD");
                    ENCSAL.Columns.Add("DESTINO");
                    ENCSAL.Columns.Add("STREMPRESA");

                    DataRow r = ENCSAL.NewRow();
                    r["TIPO"] = tipo.Equals("P") ? "PRODUCCION" : tipo.Equals("O") ? "OTROS" : "DEVOLUCION";
                    r["NUMERO"] = enc.HOJNRO_ESA;
                    r["FECHA"] = enc.FECSAL_ESA.ToShortDateString();
                    r["OBSERVACION"] = enc.OBSSAL_ESA;
                    r["NROORD"] = enc.NROORDP_ESA;
                    r["DESTINO"] = enc.DESSAL_ESA;
                    r["STREMPRESA"] = MDOgeneral.strEmpresaImprime;
                    ENCSAL.Rows.Add(r);

                    DETSAL = new DataTable("DETSAL");
                    clases.CLSDETSAL det = new clases.CLSDETSAL { TIPSAL_DSA = tipo, HOJNRO_DSA = nrosal };
                    DETSAL = det.rImpSalMat();
                    DETSAL.TableName = "DETSAL";

                    DataSet ds = new DataSet("dsRsalMatPri");
                    ds.Tables.Add(ENCSAL.Copy());
                    ds.Tables.Add(DETSAL.Copy());                    
                    Vista vista = new Vista { ds = ds, reporte = @"reportes\repRsalMatPri.rpt" };
                    vista.Show();
                }
                
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }
    }
}
